package pe.com.bbva.targps.job;

import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import org.apache.log4j.Logger;

import pe.com.bbva.mantenimiento.bo.KitMaterialBO;
import pe.com.bbva.mantenimiento.bo.ParametroBO;
import pe.com.bbva.mantenimiento.domain.KitMaterial;
import pe.com.bbva.mantenimiento.domain.Parametro;
import pe.com.bbva.util.Constantes;
import pe.com.stefanini.core.exceptions.BOException;
import pe.com.stefanini.core.exceptions.DAOException;
import pe.com.stefanini.core.util.FechaUtil;

@Service("updateVigenciaJob")
public class UpdateVigenciaJob {
	Logger logger = Logger.getLogger(this.getClass());
	
	@Resource
	private KitMaterialBO kitMaterialBO;
	@Resource
	private ParametroBO parametroBO;
	
	public void updateVigenciaKitMaterial() throws BOException, DAOException {

		try {
			logger.info("TarGps:INICIO updateVigenciaKitMaterial JOB");
			Parametro activado = parametroBO.findByNombreParametro(Constantes.COD_PARAM_UPDATE_FECHAS);
			if(activado !=null && activado.getValor().equals(Constantes.VAL_ACTIVO)){
				Date today = new Date();
				Long fechaActualNumero = today.getTime();
				String fechaActual = FechaUtil
				.formatFechaActual(FechaUtil.DDMMYYYY);
				KitMaterial findKit = new KitMaterial();
				findKit.setEstado(Constantes.VAL_ACTIVO);
				List<KitMaterial> listaKitMaterialActivo= kitMaterialBO.findKits(findKit);
	
				if (!listaKitMaterialActivo.isEmpty()) {
					for (KitMaterial kitMaterialVigente : listaKitMaterialActivo) {
						if(kitMaterialVigente.getFechaFin() != null){
							Long fechaVencimiento = kitMaterialVigente
									.getFechaFin().getTime();
							long nroDias = (long) Math.floor((fechaVencimiento
									- fechaActualNumero + 1)
									/ (1000 * 60 * 60 * 24));
							if (nroDias <= 0) {
								kitMaterialVigente.setEstado(Constantes.VAL_INACTIVO);
								kitMaterialBO.save(kitMaterialVigente);
								logger.info("Id KitMaterial actualizado INACTIVO:"+kitMaterialVigente.getId());
							}
						}
						if(kitMaterialVigente.getFechaInicio() != null){
							String fechaApertura = FechaUtil.formatFecha(
									kitMaterialVigente.getFechaInicio(),
									FechaUtil.DDMMYYYY);
							if (fechaApertura.equals(fechaActual)) {
								kitMaterialVigente.setEstado(Constantes.VAL_INACTIVO);
								kitMaterialBO.save(kitMaterialVigente);
								logger.info("Id KitMaterial actualizado ACTIVO:"+kitMaterialVigente.getId());
							}
						}
					}
	
				}
			}
			logger.info("TarGps:FIN updateVigenciaKitMaterial JOB");
		} catch (Exception e) {
			logger.error(e.getMessage(), e);
		}
	}
	

}
